#ifndef __ENCODER_H
#define __ENCODER_H

#include <stdint.h>

/**
 * @brief 更新电机计数器（从外部中断中调用）
 * @param motor_index 电机索引 (0-3)
 * @param direction 方向 (1=正转, 0=反转)
 */
void Encoder_Update(uint8_t motor_index, uint8_t direction);

/**
 * @brief 计算所有电机的RPM
 * @note 建议每100ms或更长时间调用一次此函数
 */
void Encoder_Calculate_RPM(int16_t *motor1_rpm, int16_t *motor2_rpm, int16_t *motor3_rpm, int16_t *motor4_rpm);

/**
 * @brief 获取指定电机的RPM
 * @param motor_index 电机索引 (0-3)
 * @return 电机RPM值
 */
uint32_t Encoder_Get_RPM(uint8_t motor_index);

/**
 * @brief 获取指定电机的方向
 * @param motor_index 电机索引 (0-3)
 * @return 电机方向: 1(正转) 或 -1(反转)
 */
int8_t Encoder_Get_Direction(uint8_t motor_index);


#endif /* __ENCODER_H */
